iT邦幫忙

2022 iThome 鐵人賽

DAY 21
0
DevOps

Golang X DevOps系列 第 21

Day21 - 建置 CI Workflow

  • 分享至 

  • xImage
  •  

在所有東西開始之前 記得先把 Code 推上你的 Repo喔

建置 CI workflow

  • 寫完 Test,我們要來幫他寫一個 CI 的 Workflow
  • 先到我們前天創的 Repo 點擊 Action 的選項,你應該會看到下面那張圖
  • 點擊 set up a workflow yourself

撰寫 YML File

  • 剛剛點進來後要看到這個畫面
  • 先把檔名改成 ci.yml
# 這個 Action 的名子
name: CI Workflow

# 要在哪個 branch 上面
on:
  push:
    branches: [ "master" ]
  pull_request:
    branches: [ "master" ]
  workflow_dispatch:
  • on 的部分要注意,因為我有改過預設 branch 的名稱,所以會是 master,如果沒有的話這裡要寫 main
  • workflow_dispatch 是選擇性選項,看你要不要手動跑

Workflow

  • 剛剛都說是 Workflow 了, 所以 yml 裡面當然是由很多個 task 組成的

  • 我們要執行測試 , 所以當然要把測試寫進去

  • 整個 yml 大概要寫成這樣的流程

    • 有一個 Go env
    • 確認我們 Repo 上的 Code
    • 下載需要的 Go Modules
    • Build 一下(可以不要用)
    • 編一個 Docker Image
    • 跑你寫出來的 Unit testing
  • 接著把它寫進 yml 裡面

jobs:
  build-and-test:
    runs-on: ubuntu-latest
    
    # 剛剛上面講的流程
    steps:
      - name: Set up Go
        uses: actions/setup-go@v2
        with:
          go-version: 1.19

      - name: Checkout code
        uses: actions/checkout@v2

      - name: Fetch required Go modules
        run:  go mod download
     # 這個不一定要加
      - name: Build
        run:  go build -v 

      - name: Build Docker image
        uses: docker/build-push-action@v2
        with:
          push: false
          tags: ${{ github.event.repository.name }}:latest, ${{ github.repository }}:latest

      - name: Run functional tests
        run:  go test -v 

Start Commit

  • 寫完之後,按一下右上角的Start Commit,然後寫Commit Message

  • 寫完後可以看Action的地方有沒有跑成功,沒有跑成功的話記得看一下 Error Log 根據 Error Log 去修 Bug

  • 我自己在跑的時候有遇到 Go 版本問題導致 CI 跑錯 所以可以注意一下


上一篇
Day20 - 先幫你的 Go 撰寫測試
下一篇
Day22 - 語意化版本
系列文
Golang X DevOps30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言